import matplotlib.pyplot as plt
import numpy as np
from scipy import signal


def u(n):
    return np.where(n >= 0, 1, 0)


n_min = -20
n_max = 20
n = np.arange(n_min, n_max + 1, 1)
n_y = np.arange(n_min * 2, n_max * 2 + 1, 1)

x = u(n - 1) - u(n - 5)
h = u(n - 2) - u(n - 8) + u(n - 11) - u(n - 17)

y = signal.convolve(x, h)

plt.subplot(311)
plt.stem(n, x)
plt.xlabel('n')
plt.ylabel('x[n]')

plt.subplot(312)
plt.stem(n, h)
plt.xlabel('n')
plt.ylabel('h[n]')

plt.subplot(313)
plt.stem(n_y, y)
plt.xlabel('n')
plt.ylabel('y[n]')

plt.show()
